#include <stdio.h>
#include <string.h>
#include "../Utils/StringFormatUtils.h"

void ip_convert();
void chinese_reverse();

int main() {
//    char *Dest = NULL;
    char Dest[0];
    printf("%p\n", &Dest);
    stringFormat(Dest, "%d+%d=%d", 2, 3, 5);
//    sprintf(Dest, "%d+%d=%d", 2, 3, 5);
//    for (int i = 0; i < sizeof(Dest) / sizeof(Dest[0]); ++i)
    printf("Dest = %s", Dest);


//    ip_convert();
//    chinese_reverse();

    int a = 3;
    int b = 5;
    a ^= b ^= a ^= b;       //值异或回来

    return /*EXIT_SUCCESS*/0;
}

/**
 * 13.08_基本输入
 */
void scanfInput() {
    printf("3.基本输入.\n");
    printf("  请输入班级人数:\n");
    int count;
    scanf_s("%d", &count);	//&: 取地址值. scanf()函数报错: 不安全
    printf("  班级人数: %d\n", count);
    printf("\n");
}

//7.1 IP转int(192.168.6.252)
void ip_convert() {
    int ip = 0;
    unsigned int *p = &ip;
    *p = 192;
    p++;
    *p = 168;
    p++;
    *p = 6;
    p++;
    *p = 252;
    printf("ip = %d\n", ip);//-66672448

    p -= 3;
    printf("ips = %u.%u.%u.%u\n", *p, *(p + 1), *(p + 2), *(p + 3));//192.168.6.252
    printf("打印完毕!\n");
}

//10.3.汉字逆序
void chinese_reverse() {
    //VS的汉字是GBK编码(2个字节), QT汉字是UTF-8编码(3个字节)
    char str[100] = "你好我也好";
    short *str_start = &str[0];
    short *str_end = &str[strlen(str) - 2]; //short指针一次跳2个字节
    while(str_start < str_end) {
        short tmp = *str_start;
        *str_start = *str_end;
        *str_end = tmp;
        str_start ++;
        str_end --;
    }
    printf("%s\n", str);
}


//邇er爾薾嬭趰悪  閿 
//‭0010000000000000‬

/**
 * 用类前：用函数把结构体传进去就行。
 * 用类后：直接call成员函数真香。
 * 用STL前：手撕数据结构与算法，so easy啊。
 * 用STL后；艹，原来大佬已经帮我把所有东西都写好了，MD，还比我写的牛逼无数倍。
 * 用模板前：没事，我用宏函数也可以的。
 * 用模板后：艹艹艹，代码还能这么复用？？？
 * 用智能指针前：这内存怎么又双叒叕泄露了？？？
 * 用智能指针后：这内存管理貌似和JAVA没什么区别，再也不用人肉释放内存了，真香。
*/



/**
 * conio.h 是 Windows 下特有的头文件，所以 kbhit() 也只适用于 Windows，
 *          不适用于 Linux 和 Mac OS。
 *
 * 函数名    是否以回车结束  输入时是否回显  阻塞后面的代码
 * getch()       ✘            ✘             ✔
 * getche()      ✘            ✔             ✔
 * getchar()     ✔            ✔             ✔
 */


//TODO 还有 13 个Linux视频没看: https://www.bilibili.com/video/BV1vs411n7TH/?p=132